package com.sz.virtualbank.service.bankcard;

import com.sz.virtualbank.dao.entity.BankCard;

import java.util.List;

/**
 * 银行卡服务接口
 * 
 * @author Claude
 */
public interface BankCardService {
    
    /**
     * 添加银行卡
     *
     * @param bankCard 银行卡信息
     * @return 添加后的银行卡信息
     */
    BankCard addBankCard(BankCard bankCard);
    
    /**
     * 查询用户的银行卡列表
     *
     * @param userId 用户ID
     * @return 银行卡列表
     */
    List<BankCard> getBankCardList(Long userId);
    
    /**
     * 查询银行卡详情
     *
     * @param id 银行卡ID
     * @param userId 用户ID
     * @return 银行卡信息
     */
    BankCard getBankCardDetail(Long id, Long userId);
    
    /**
     * 设置默认银行卡
     *
     * @param id 银行卡ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean setDefaultCard(Long id, Long userId);
    
    /**
     * 删除银行卡
     *
     * @param id 银行卡ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteBankCard(Long id, Long userId);
    
    /**
     * 获取用户的默认银行卡
     *
     * @param userId 用户ID
     * @return 默认银行卡信息
     */
    BankCard getDefaultCard(Long userId);
    
    /**
     * 验证银行卡是否有效
     *
     * @param cardNumber 卡号
     * @param cardholderName 持卡人姓名
     * @param expireDate 有效期（信用卡）
     * @param cvv 安全码（信用卡）
     * @return 是否有效
     */
    boolean validateBankCard(String cardNumber, String cardholderName, String expireDate, String cvv);
}
